home *** CD-ROM | disk | FTP | other *** search
/ Chip 2005 August (Alt) / CHIP 2005-08.1.iso / program / guvenlik / syslinux-3.07.exe / genhash.pl < prev    next >
Encoding:
Perl Script  |  2003-04-10  |  610 b   |  27 lines

  1. #!/usr/bin/perl
  2. #
  3. # Generate hash values for keywords
  4. #
  5.  
  6. eval { use bytes; };
  7.  
  8. while ( defined($keywd = <STDIN>) ) {
  9.     chomp $keywd;
  10.     
  11.     ($keywd,$keywdname) = split(/\s+/, $keywd);
  12.     $keywdname = $keywd unless ( $keywdname );
  13.  
  14.     $l = length($keywd);
  15.     $h = 0;
  16.     for ( $i = 0 ; $i < $l ; $i++ ) {
  17.     $c = ord(substr($keywd,$i,1)) | 0x20;
  18.     $h = ((($h << 5)|($h >> 27)) ^ $c) & 0xFFFFFFFF;
  19.     }
  20.     if ( $seenhash{$h} ) {
  21.     printf STDERR "$0: hash collision (0x%08x) %s %s\n",
  22.     $h, $keywd, $seenhash{$h};
  23.     }
  24.     $seenhash{$h} = $keywd;
  25.     printf("%-23s equ 0x%08x\n", "hash_${keywdname}", $h);
  26. }
  27.